package com.example.io;

import java.io.File;
import java.io.IOException;

/**
 * @author readpage
 * @create 2022-10-13 20:47
 */
public class FileUtils {

    /**
     * 创建文件或目录
     * @param file
     * @return
     */
    public static boolean create(File file) {
        String path = file.getAbsolutePath();
        //判断此file对象是否为目录
        if (file.isDirectory() || !path.contains(".")) {
            // 创建目录，而且可以在父文件夹不存在的情况下，创建子文件夹，顺便将父文件夹也创建了，递归创建。
            return file.mkdirs();
        } else {
            // 返回此File对象的父目录，返回File类型。
            File parFile = file.getParentFile();
            //不存在父路径就创建
            if (!parFile.exists()) {
                parFile.mkdirs();
            }
            //文件创建
            try {
                return file.createNewFile();
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
        }
    }

    /**
     * 创建文件或目录
     * @param path
     * @return
     */
    public static boolean create(String path) {
        return create(new File(path));
    }


    /**
     * 删除指定的目录或文件
     * @param file
     * @return
     */
    public static boolean delete(File file) {
        // 如果file是文件，直接delete
        // 如果file是目录，先把它的下一级干掉，然后删除自己
        if (file.isDirectory()) {
            // 循环删除的是file的下一级
            for (File f : file.listFiles()) {
                delete(f);
            }
        }
        // 删除自己
        return file.delete();
    }
}
